//
//  MCFileManage.h
//  ShanDianXiu
//
//  Created by delicious on 2017/12/28.
//  Copyright © 2017年 delicious. All rights reserved.
//

#import <Foundation/Foundation.h>

/*
1、Documents 目录：您应该将所有de应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。
2、Library 目录：这个目录下有两个子目录：Caches 和 Preferences
   Preferences 目录：包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件，而是应该使用NSUserDefaults类来取得和设置应用程序的偏好.
   Caches 目录：用于存放应用程序专用的支持文件，保存应用程序再次启动过程中需要的信息。
3、tmp 目录：这个目录用于存放临时文件，保存应用程序再次启动过程中不需要的信息。
 */
typedef NS_OPTIONS(NSInteger, pathType){
    pathHomeType,
    pathDocumentType,
    pathLibraryType,
    pathTmpType,
    pathCachesType
};



@interface NSString (path)
/**
 Home的文件目录
 */
+(NSString *)homeFolder;
/*
 *  document根文件夹
 */
+(NSString *)documentFolder;
/*
 *  tmp根文件夹
 */
+(NSString *)tmpFolder;
/*
 *  library根文件夹
 */

+(NSString *)libraryFolder;

/*
 *  caches根文件夹
 */
+(NSString *)cachesFolder;


/**
 *  生成子文件夹
 *
 *  如果子文件夹不存在，则直接创建；如果已经存在，则直接返回
 *
 *  @param subFolder 子文件夹名
 *
 *  @return 文件夹路径
 */
-(NSString *)createSubFolder:(NSString *)subFolder;
/**
 *
 *  获取完成的路径
 *
 *  @param otherPath 文件路径
 *
 *  @return 文件路径
 */
+(NSString *)onPathByOtherPath:(NSString *)otherPath;
@end


@interface MCFileManager : NSObject
/* <判断文件是否已经在沙盒文件夹中已经存在 > */
+(BOOL)isFileExist:(NSString *)fileName pathType:(pathType)Type;
/* <判断文件夹中已经存在 > */
+(BOOL)isFileJiaName:(NSString *)fileName pathType:(pathType)Type;

/* < 在沙盒文件中创建文件夹 > */
+(NSString *)createFileJiaName:(NSString *)fileName pathType:(pathType)Type;
/* < 在沙盒文件中创建文件 > */
+(NSString *)createFileName:(NSString *)fileName pathType:(pathType)Type;

/* < 在沙盒文件中删除文件 > */
+(BOOL)deletableFileName:(NSString *)fileName pathType:(pathType)Type;
/* < 在沙盒文件中全部文件 > */
+(void)deletableisFileJiaName:(NSString *)fileName pathType:(pathType)Type;
/* < 在沙盒文件中删除归档的对象 > */
+(BOOL)deletableForFileName:(NSString *)fileName pathType:(pathType)Type;

/* < 把对象归档存到沙盒里 > */
+(BOOL)saveObject:(id)object byFileName:(NSString *)fileName pathType:(pathType)Type;
/* < 通过文件名从沙盒中找到归档的对象 > */
+ (id)getObjectByFileName:(NSString*)fileName  pathType:(pathType)Type;

/* < 获取单个文件的大小 > */
+ (long long)getSizeByFileName:(NSString*)fileName  pathType:(pathType)Type;
/* < 遍历文件夹获得文件夹大小 > */
+ (float)getFolderSizeByFileName:(NSString*)fileName  pathType:(pathType)Type;
@end


